package es.index.util;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

/**
 * 返回类的所有方法
 * 
 * @author BeiBei
 * 
 */
public final class GetClassMethods {
	private GetClassMethods() {
	}

	/**
	 * 返回一个类的所有方法
	 * @param object 要获取方法的类
	 * @param list   存放方法的集合，如果该值为null，将创建一个新的list
	 * @return List<Method>
	 */
	public static List<Method> getMethods(Object object, List<Method> list) {
		if (list == null)
			list = new ArrayList<Method>();
		Method[] methods = object.getClass().getDeclaredMethods();
		for (Method method : methods)
			list.add(method);

		Class<?> superclass = object.getClass().getSuperclass();
		System.out.println(superclass.getName());
		System.out.println(Object.class);
		if (superclass != null && !superclass.getName().endsWith("java.lang.Object")) {
			return getMethods(superclass, list);
		}
		return list;
	}
}
